/*
Driver.java
Fecha: 07 de julio de 2011
Autor: Claudia Grajeda
Descripcion: radio, hoja de trabajo 1
*/

/**
 * @author Claudia
 *
 */

public class Radio implements NuestraInterfaz{
	//Atributos  del objeto radio!
	private boolean estado;
	private boolean emisora;
	private double estacion;
	private double[][] memoria;
	
	//constructor
	public Radio(){
		estado = false; //off
		emisora = false; //fm o 1
		estacion = 530;
		memoria = new double [12][2];
	}
	
	//constructor personalizado
	//public Radio(boolean estado){
		//this.estado = false; //off
	//}
	
	
        /**
         * power - encender o apagar el radio
         *@return boolean
         * 
         */

	public boolean power(){
		if (estado)
			estado = false; //cambia a off
		else{
			estado = true; //cambia a on
			estacion = 87.9;
			emisora = true;
		}
		return estado;
	}
	
	// cambiar de am a fm o de fm a am
        /**
         * cambiar de am a fm o de fm a am
         *@return boolean
         * 
         */
	public boolean cambio(){
		if (emisora){
			emisora = false; //cambia a am o 2
			estacion = 530;
		}
		else{
			emisora = true; //cambia a fm o 1
			estacion = 87.9;
		}
		return emisora;
		
	}
	
	//fw: siguiente estacion para fm +.2 parar am +10
	/**
         * fw: siguiente estacion para fm +.2 parar am +10
         * 
         */
	public void fw(){
		if (emisora){   // esta en fm
			if (estacion >=107.9){
				estacion = 87.9;
			}
			else{
				estacion = estacion + .2;
			}
		}
		else{ // esta en am
			if (estacion ==1610){
				estacion = 530;
			}
			else{
				estacion = estacion + 10;
			}
		}
	}
	
	//bw: estacion anterior
        /**
         * bw: estacion anterior
         * 
         */
	public void bw(){
		if (emisora){   // esta en fm
			if (estacion <= 87.9)
				estacion = 107.9;
			else
				estacion -= .2;
		}
		else{ // esta en am
			if (estacion == 530)
				estacion = 1610;
			else
				estacion -= 10;
		}
	}
	
	//grabar la emisora y estacion actual en el numero de memoria
	//solicitado por el usuario
         /**
         *Grabar la emisora y estacion actual en el numero de memoria
	 *solicitado por el usuario
         * @param numero
         * 
         */
	public void store(int numero){
		if (numero <=12 && numero >= 1 ){
			numero = numero - 1;
			memoria[numero][0] = estacion;
			if (emisora){
				int m = 1;
				memoria[numero][1] = m;
				System.out.println("\nMemoria " + (numero+1) +": FM " + estacion + "\n");
			}
			else {
				int m = 2;
				memoria[numero][1] = m;
				System.out.println("\nMemoria " + (numero+1) +": AM " + estacion + "\n");
			}
		}
		else{
			System.out.println("\nUsted solo cuenta con 12 memorias.");
			System.out.println("Elija una opcion del menu \n");
		}	
	}
	
	//"escuchar" la estacion de radio guardada 
	//en la memoria solicitada por el usuario
        /**
         *"escuchar" la estacion de radio guardada 
	 *en la memoria solicitada por el usuario
         * @param numero
         * 
         */
	public void select( int numero){
		if (numero <=12 && numero >= 1 ){
			numero = numero-1;
			estacion = memoria[numero][0] ;
			if (estacion == 0){
				System.out.println("\nEsta localidad de memoria no tiene ninguna estacion guardada\n");
			}
			else{
				if (memoria[numero][1] == 2){
					emisora = false;
					System.out.println("\nMemoria: " + (numero+1) +": AM " + estacion + "\n");;
				}
				else {
					emisora = true;
					System.out.println("\nMemoria: " + (numero+1) +": FM " + estacion + "\n");
				}
			}
		}
		else{
			System.out.println("\nUsted solo cuenta con 12 memorias.");
			System.out.println("Elija una opcion del menu \n");
		}
	}	
	
	// salir del programa
        /**
         *salir del programa 
	     * 
         */
	public void salir(){
		System.out.println("\n    Bye!! :O)\n");
	}
	
	//estado del radio 
        /**
         *estado del radio 
		*@return String
         * 
         */
	public String toString(){
        String descripcion;
		descripcion = "\n";
		descripcion  +="\n     Usted esta escuchando:\n";
        descripcion  += "\n       Estacion: " + estacion + "\n";
		if (emisora)
			descripcion += "         Emisora: FM \n";
		else
			descripcion += "         Emisora: AM\n";
		descripcion+="\n";
		
		
        return descripcion;
    }
	
}